import java.util.Arrays;

public class Merge {




    public static void merge(int[] nums1, int m, int[] nums2, int n) {
           int i = 0,j = 0,k = 0;
           //i指向num1数组的起始位置，j指向nums2数组的起始位置
           // k指向num1数组的起始位置

           int[] result = new int[n + m];
        //比较i所指元素和j所指元素的大小，将较小者放入k所指位置
         while(i < m && j < n) {
             if(nums1[i] <= nums2[j]) {
                 result[k++] = nums1[i++];
             }

             if(nums1[i] > nums2[j]) {
                 result[k++] = nums2[j++];
             }
         }

         while(i < m) {
             result[k++] = nums1[i++];
         }

         while(j < n) {
             result[k++] = nums2[j++];
         }
        //当i或者j到达边界之后，将另一个数组的剩余元素复制到结果数组的尾部

        for (int i1 = 0; i1 < result.length; i1++) {
            nums1[i1] = result[i1];
        }
    }

    public static void main(String[] args) {
        int[] nums1 = new int[]{1,2,3,0,0,0};
        int[] nums2 = new int[]{2,5,6};
        int m = 3;
        int n = 3;
        System.out.println(Arrays.toString(nums1));
        merge(nums1,m,nums2,n);
        System.out.println(Arrays.toString(nums1));
    }
}
